package com.renwen.sms.service;

import com.renwen.sms.dto.*;

import com.renwen.sms.entity.Teacher;

import com.renwen.sms.util.Result;


import java.util.List;
import java.util.Map;

/**
 * 教师业务逻辑接口类
 */
public interface TeacherService {
    /**
     * 查询指定管理员操作下的所有教师列表
     * @param page 页码
     * @param size 每页显示条数
     * @param searchMap 搜索条件
     * @return 所有教师列表
     */
    PageResult<TeacherDto> list(Integer page, Integer size, Map<String, Object> searchMap);
    /**
     * 添加教师
     * @param  teacher
     */
    void save(Teacher teacher);
    /**
     * 根据教师编号查询教师信息
     * @param id 教师编号
     * @return 教师信息
     */
    Result get(Integer id);
    /**
     * 修改教师信息
     * @param teacher 教师对象
     */
    void update(Teacher teacher);
    /**
     * 根据教师教师号删除
     */
    void delete(String tNo);
    /**
     * 批量删除教师信息
     * @param ids 教师编号列表
     */
    void batchDelete(String ids);
    /**
     * 查询选择自己课程的学生信息
     * @param page 页码
     * @param size 每页显示条数
     * @param searchMap 搜索条件
     * @return 课程列表列表
     */
    PageResult<XuanKeDto> studentList(Integer page, Integer size, Map<String, Object> searchMap);
    /**
     * 查询未安排课程的教师列表
     * @return 教师列表
     */
    List<TeacherDto> noCnoList();
    /**
     * 查询未安排班级教师信息
     *
     * @return 教师信息列表
     */
    List<TeacherDto> noClsNoList();
    /**
     *查询当前所教的课程信息
     */
    PageResult<CourseDto> myCourse(Integer page, Integer size, Map<String, Object> formMap);
    /**
     *查询当前教师所管理的班级信息
     */
    PageResult<ClassDto> myClass(Integer page, Integer size, Map<String, Object> formMap);
    /**
     * 添加学生成绩
     * @return
     */
    int addGrade(Grade grade);
    /**
     * 根据选课id查询学生成绩
     */
    Grade getGradeById(String id);
    /**
     *查询当前教师所管理的班级学生信息
     */
    PageResult<StudentDto> myStudent(Integer page, Integer size, Map<String, Object> formMap);



}
